package com.li.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 自定义注解
 */
//标注注解的注解，叫做元注解。

//@Target用来修饰该注解可以出现的地方
//以下表示@Component注解可以出现在类、属性上（value是一个数组）
//使用某个注解的时候，如果注解的属性名是value，那么value可以省略
//使用某个注解的时候，如果注解的属性值是数组，并且数组中只有一个元素，大括号可以省流
@Target(ElementType.TYPE)
//@Retention也是一个元注解，用来设置该注解的保持性策略
//以下表示@Component注解最终保留在class文件当中，并且可以被反射机制读取
@Retention(RetentionPolicy.RUNTIME)
public @interface Component {

    //定义注解的属性
    //String 是属性类型
    //value() 是属性名称
    String value();

//    String name();

//    //数组属性
//    //属性类型是String[]
//    //属性名是 names
//    String[] names();
//
//    int[] ages();
//
//    int age();
}
